Apparatus and method for offset optimization for low-density parity-check (LDPC) code

ABSTRACT

An apparatus and method are provided. The apparatus includes a decoder, including a first input configured to receive transport blocks, a second input, a third input, a fourth input, and an output configured to provide a decoded codeword, and an offset value updater, including an input connected to the output of the decoder, a first output connected to the third input of the decoder configured to provide an updated offset value, and a second output connected to the fourth input of the decoder configured to provide an index for a next codeword to be decoded.

PRIORITY

This application claims priority under 35 U.S.C. § 119(e) to a U.S.Provisional Patent Application filed on Dec. 3, 2018 in the UnitedStates Patent and Trademark Office and assigned Ser. No. 62/774,605, theentire contents of which are incorporated herein by reference.

FIELD

The present disclosure relates generally to wireless communicationsystems, and more particularly, to an apparatus and a method for offsetoptimization for a low-density parity-check (LDPC) code.

BACKGROUND

LDPC codes have been adopted as the channel coding scheme for the sharedchannel of the 3^(rd) generation partnership project (3GPP) new radio(NR) standards. While sum-product decoding of LDPC codes achieves verygood decoding performance, sum-product decoding is accompanied by alarge computational complexity. Minimum-sum (min-sum) decoding replacesthe complex operations that are used in sum-product decoding with lowcomplexity operations with a cost of a performance loss. Offset min-sum(OMS) decoding of LDPC codes is a method that adds an additive term tothe min-sum process in an attempt to approach the sum-productperformance while keeping the same complexity of the min-sum process.However, finding the optimal offset for each case (e.g., code parameter,channel condition) may require exhaustive effort.

SUMMARY

According to one embodiment, an apparatus includes a decoder, includinga first input configured to receive transport blocks, a second input, athird input, a fourth input, and an output configured to provide adecoded codeword, and an offset value updater, including an inputconnected to the output of the decoder, a first output connected to thethird input of the decoder configured to provide an updated offsetvalue, and a second output connected to the fourth input of the decoderconfigured to provide an index for a next codeword to be decoded.

According to one embodiment, a method includes receiving, by a firstdecoder, a plurality of codewords, an offset value, and an index thatindicates which of the plurality of codewords is to be decoded;decoding, by a second decoder, one of the plurality of codewordsindicated by the index; and updating, by an offset value updater, theoffset value.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other aspects, features, and advantages of certainembodiments of the present disclosure will be more apparent from thefollowing detailed description, taken in conjunction with theaccompanying drawings, in which:

FIG. 1 is an illustration of a network topology for a parallel BPdecoder, according to one embodiment;

FIG. 2 is an illustration of min-sum calculations in layer l of parallelBP decoder, according to one embodiment;

FIG. 3 is an illustration of parallel BP decoder and gradientcalculations with update rules, according to one embodiment;

FIG. 4 is an illustration of sequential BP message flow, according toone embodiment;

FIG. 5 is a flowchart of an online learning method, according to oneembodiment;

FIG. 6 is a flowchart of a progressive learning method, according to oneembodiment;

FIG. 7 is a flowchart of a feedback learning method, according to oneembodiment;

FIG. 8 is a flowchart of a method of updating an offset value with alarge search space under different transmission environments, accordingto one embodiment;

FIG. 9 is an apparatus for online learning, according to an embodiment;

FIG. 10 is an apparatus for an offset value updater, according to anembodiment;

FIG. 11 is an apparatus for an offset value updater, according to anembodiment;

FIG. 12 is an apparatus for feedback learning, according to anembodiment; and

FIG. 13 is a block diagram of an electronic device in a networkenvironment to which an apparatus and a method of the present disclosureis applied, according to one embodiment.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE PRESENT DISCLOSURE

Hereinafter, embodiments of the present disclosure are described indetail with reference to the accompanying drawings. It should be notedthat the same elements will be designated by the same reference numeralsalthough they are shown in different drawings. In the followingdescription, specific details such as detailed configurations andcomponents are merely provided to assist with the overall understandingof the embodiments of the present disclosure. Therefore, it should beapparent to those skilled in the art that various changes andmodifications of the embodiments described herein may be made withoutdeparting from the scope of the present disclosure. In addition,descriptions of well-known functions and constructions are omitted forclarity and conciseness. The terms described below are terms defined inconsideration of the functions in the present disclosure, and may bedifferent according to users, intentions of the users, or customs.Therefore, the definitions of the terms should be determined based onthe contents throughout this specification.

The present disclosure may have various modifications and variousembodiments, among which embodiments are described below in detail withreference to the accompanying drawings. However, it should be understoodthat the present disclosure is not limited to the embodiments, butincludes all modifications, equivalents, and alternatives within thescope of the present disclosure.

Although the terms including an ordinal number such as first, second,etc. may be used for describing various elements, the structuralelements are not restricted by the terms. The terms are only used todistinguish one element from another element. For example, withoutdeparting from the scope of the present disclosure, a first structuralelement may be referred to as a second structural element. Similarly,the second structural element may also be referred to as the firststructural element. As used herein, the term “and/or” includes any andall combinations of one or more associated items.

The terms used herein are merely used to describe various embodiments ofthe present disclosure but are not intended to limit the presentdisclosure. Singular forms are intended to include plural forms unlessthe context clearly indicates otherwise. In the present disclosure, itshould be understood that the terms “include” or “have” indicateexistence of a feature, a number, a step, an operation, a structuralelement, parts, or a combination thereof, and do not exclude theexistence or probability of the addition of one or more other features,numerals, steps, operations, structural elements, parts, or combinationsthereof.

Unless defined differently, all terms used herein have the same meaningsas those understood by a person skilled in the art to which the presentdisclosure belongs. Terms such as those defined in a generally useddictionary are to be interpreted to have the same meanings as thecontextual meanings in the relevant field of art, and are not to beinterpreted to have ideal or excessively formal meanings unless clearlydefined in the present disclosure.

The present disclosure concerns an apparatus and a method fordetermining an optimal offset value via a gradient descent process wherea gradient is calculated via a backpropagation process. The presentdisclosure includes a method of determining calculations of thegradient. The method not only provides low complexity for gradientcalculations but also enables gradient calculations for differentscheduling techniques such as parallel and sequential BP. Moreover, thepresent disclosure discloses methods for adapting to differenttransmission environments.

In addition, the present disclosure discloses a method for gradientcalculations of an offset parameter of BP decoding. The method enablescalculations of a gradient of an error function of a decoder withrespect to an offset value under any scheduling technique. Furthermore,the present disclosure discloses an optimal offset value under certaincode parameters and channel conditions.

Moreover, in order to account for more practical scenarios at which atransmission environment has many parameters that are free to change,the present disclosure discloses methods under such a transmissionenvironment. One method is online learning in which an optimal offsetvalue is learned during the transmission. Another method is to increasea search space of an offset value to find optimal offset values for alltransmission environments.

In order to find an optimal offset value under a certain schedulingmethod, a gradient of a pre-defined error function of a decoder withrespect to the offset is calculated and the offset value is changed in adirection that reduces a result of the error function. Therefore, thepresent disclosure discloses calculating a gradient of an error functionof a decoder with respect to an offset value.

An error function and gradient calculations for parallel BP using an OMSmethod are disclosed below in greater detail. In addition, gradientcalculations under sequential scheduling are disclosed as an example.However, the present disclosure applies to any scheduling technique.

FIG. 1 is an illustration of a network topology for a parallel BPdecoder 100, according to one embodiment.

Referring to FIG. 1, an output of the BP decoder 100 are log-likelihoodratios (LLRs), γ_(i), where an additional node calculates an error basedon the output LLRs, and a correct decision, assuming knowledge of thecorrect decision over the BP decoder 100 output.

FIG. 1 illustrates an L+1 layer network including l input layers, L−2hidden layers, l output layers, and 1 cost function computation layer.

l is a layer index, where l=1, . . . , L, and where L is an integer.

A set (N, K, M) is a set of a number N of variable nodes 101, a number Kof information bits, and a number M of check nodes, where N, K, and Mareeach an integer, and where M=N−K.

H∈Z^(M×N) is a parity check matrix, where h_(ij)=1 whenever a check nodei 103 is connected to a variable node j 101 and zero otherwise, where iand j are each an integer.

Λ=[λ₁, λ₂, . . . , λ_(N)]^(T)∈R^(N) is an input LLR of the variablenodes 101, where T is an integer.

Γ=[γ₁, γ₂, . . . , γ_(N)]^(T)∈R^(N) is an output LLR of the variablenodes 101.

C(j) is a set of check node 103 indices connected to a variable node j101, where j=1, . . . , N.

V(i) is a set of variable node 101 indices connected to a check node i103, where i=1, . . . , M.

w_(i) ^((l)) is an offset parameter on an i-th check node 103 of an l-thiteration.

α_(ij) ^((l)) is a check node 103 to variable node 101 (C2V) messagefrom the i-th check node 103 to the j-th variable node 101.

β_(ij) ^((l)) is a variable node 101 to check node 103 (V2C) messagefrom the j-th variable node 101 to the i-th check node 103.

ƒ(Γ): R^(N)→R is a cost function 105 such that J=ƒ(Γ).

An offset value may be different for each check node 103 at eachiteration. However, if the offset value is fixed over all of thenetwork, the gradient of the fixed offset value will be the sum of theindividual offset values calculated from the previous network.

FIG. 2 is an illustration of min-sum calculations in layer l of aparallel BP decoder, according to one embodiment.

Referring to FIG. 2, calculations of messages at layer l are shown,where m 201, j 205, and n 209 are variable nodes, and where i 203 and k207 are check nodes.

In the present disclosure,

$\frac{dJ}{{dw}_{i}^{(l)}}$is found for all layers (l=1, . . . , L). The chain rule is applied asin Equation (1) as follows:

$\begin{matrix}{\frac{dJ}{{dw}_{i}^{(l)}} = {{\sum\limits_{j \in {V{(i)}}}{\frac{\partial J}{\partial\alpha_{ij}^{(l)}}\frac{\partial\alpha_{ij}^{(l)}}{\partial w_{i}^{(l)}}}} = {\sum\limits_{j \in {V{(i)}}}{\Delta_{\alpha,{ij}}^{(l)}A_{w,{ij}}^{(l)}}}}} & (1)\end{matrix}$where

$\Delta_{\alpha,{ij}}^{(l)} = \frac{\partial J}{\partial\alpha_{ij}^{(l)}}$and

$A_{w,{ij}}^{(l)} = \frac{\partial\alpha_{ij}^{(1)}}{\partial w_{i}^{(l)}}$

Since α_(ij) ^((l))=(Π_(j′∈V(i)\j)sign(β_(ij′) ^((l)))) max

$\left( {{{\min\limits_{j^{\prime} \in {{V{(i)}}\backslash j}}{\beta_{{ij}^{\prime}}^{(l)}}} - w_{i}^{(l)}},0} \right),$the calculation of A_(w,ij) ^((l)) is given by Equation (2) as follows:

$\begin{matrix}{A_{w,{ij}}^{(l)} = {\frac{\partial\alpha_{ij}^{(l)}}{\partial w_{i}^{(l)}} = \left\{ {\begin{matrix}{{- \left( {\prod\limits_{j^{\prime} \in {{V{(i)}}\backslash j}}\;{{sign}\left( \beta_{{ij}^{\prime}}^{(l)} \right)}} \right)},} & {{{if}\mspace{14mu}{\min\limits_{j^{\prime} \in {{V{(i)}}\backslash j}}{\beta_{{ij}^{\prime}}^{(l)}}}} > w_{i}^{(l)}} \\{0,} & {otherwise}\end{matrix} = {{{- {{sign}\left( \alpha_{ij}^{(l)} \right)}}{where}\mspace{14mu}{sign}\mspace{14mu}(x)} = {{0\mspace{14mu}{for}\mspace{14mu} x} = 0.}}} \right.}} & (2)\end{matrix}$

In addition, Δ_(α,ij) ^((l)) for all i 203, j 205 with h_(ij)=1, isgiven by Equation (3) as follows:

$\begin{matrix}{\Delta_{\alpha,{ij}}^{(l)} = {\frac{\partial J}{\partial\alpha_{ij}^{(l)}} = {{\sum\limits_{k \in {{C{(j)}} \smallsetminus i}}{\frac{\partial J}{\partial\beta_{kj}^{({l + 1})}}\frac{\partial\beta_{kj}^{({l + 1})}}{\partial\alpha_{ij}^{(l)}}}} = {\sum\limits_{k \in {{C{(j)}} \smallsetminus i}}\Delta_{\beta,{kj}}^{({l + 1})}}}}} & (3)\end{matrix}$where

$\Delta_{\beta,{kj}}^{({l + 1})} = \frac{\partial J}{\partial\beta_{kj}^{({l + 1})}}$and the last equality comes from the fact that

$\frac{\partial\beta_{kj}^{({l + 1})}}{\partial\alpha_{ij}^{(l)}} = 1$because of the update rule of β_(kj) ^((l+1))=λ_(j)+Σ_(i′∈C(j)\k)α_(i′j)^((l)) and k∈C(j)\i 207.

Δ_(β,kj) ^((l+1)) for k∈C(j)207, is calculated in Equation (4) asfollows:

$\begin{matrix}{\Delta_{\beta,{kj}}^{({l + 1})} = {\frac{\partial J}{\partial\beta_{kj}^{({l + 1})}} = {{\sum\limits_{n \in {{V{(k)}} \smallsetminus j}}{\frac{\partial J}{\partial\alpha_{kn}^{({l + 1})}}\frac{\partial\alpha_{kn}^{({l + 1})}}{\partial\beta_{kj}^{({l + 1})}}}} = {\sum\limits_{n \in {{V{(k)}} \smallsetminus j}}{\Delta_{\alpha,{kn}}^{({l + 1})}\delta_{\alpha_{kn}\beta_{kj}}^{({l + 1})}}}}}} & (4)\end{matrix}$where

$\delta_{\alpha\beta}^{({l + 1})} = {\frac{\partial\alpha^{({l + 1})}}{\partial\beta^{({l + 1})}}.}$

The computation of δ_(αβ) ^((l+1)) for k∈C(j) 207 and n∈V(k)\j 209 is inEquation (5) as follows:

$\begin{matrix}{\delta_{a_{kn}\beta_{kj}}^{({l + 1})} = {\frac{\partial\alpha_{k\mathfrak{n}}^{({l + 1})}}{\partial\beta_{kj}^{({l + 1})}} = {{{{sign}^{\prime}\left( \beta_{kj}^{({l + 1})} \right)}{{sign}\left( \beta_{kj}^{({l + 1})} \right)}\alpha_{kn}^{({l + 1})}} + \left\{ \begin{matrix}\begin{matrix}{{{sign}\left( \beta_{kj}^{({l + 1})} \right)}{{sign}\left( \alpha_{kn}^{({l + 1})} \right)}} \\{\left( {1 - {{{sign}^{\prime}\left( \beta_{kj}^{({l + 1})} \right)}w_{k}^{({l + 1})}}} \right),}\end{matrix} & {{{if}\mspace{14mu} j} = {{\underset{j^{\prime} \in {{V{(k)}}\backslash\; n}}{\arg\;\min}{\beta_{{kj}^{\prime}}^{({l + 1})}}\mspace{14mu}{and}\mspace{14mu}{\alpha_{kn}^{({l + 1})}}} > 0}} \\{0,} & {otherwise}\end{matrix} \right.}}} & (5)\end{matrix}$where sign′(x) is the general derivative of sign(x).

A simplified computation with zero derivative for sign(x) is given inEquation (6) as follows:

$\begin{matrix}{\delta_{\alpha_{kn}\beta_{kj}}^{({l + 1})} = \left\{ \begin{matrix}{{{{sign}\left( \beta_{kj}^{({l + 1})} \right)}\;{{sign}\left( \alpha_{kn}^{({l + 1})} \right)}},} & {{{if}\mspace{14mu} j} = {{\underset{j^{\prime} \in {{V{(k)}}{\backslash n}}}{argmin}{\beta_{{kj}^{\prime}}^{({l + 1})}}\mspace{14mu}{and}\mspace{14mu}{\alpha_{kn}^{({l + 1})}}} > 0}} \\{0,} & {otherwise}\end{matrix} \right.} & (6)\end{matrix}$

Therefore, the gradient of the offset value of the l-th layer (l<L) isgiven by Equation (7) as follows:

$\begin{matrix}{\left. {\Delta_{\beta,{kj}}^{({l + 1})} = {g\left( {\Delta_{\alpha,{kn}}^{({l + 1})},\alpha_{kn}^{({l + 1})},\beta_{kn}^{({l + 1})}} \right.}_{n \in {V{(k)}}}} \right) = \left\{ \begin{matrix}{{{sign}\;\left( \beta_{{kj}_{1}^{*}}^{({l + 1})} \right){\sum\limits_{n \in {{V{(k)}}\backslash j_{1}^{*}}}{\Delta_{\alpha,{kn}}^{({l + 1})}\;{sign}\;\left( \alpha_{kn}^{({l + 1})} \right)}}},} & {j = {j_{1}^{*}(k)}} \\{{{sign}\;\left( \beta_{{kj}_{2}^{*}}^{({l + 1})} \right)\Delta_{\alpha,{kj}_{1}^{*}}^{({l + 1})}\;{{sign}\left( \alpha_{{kj}_{1}^{*}}^{({l + 1})} \right)}},} & {j = {j_{2}^{*}(k)}} \\{0,} & {otherwise}\end{matrix} \right.} & (7)\end{matrix}$where sign (x)=0 for x=0, and j₁*(k) and j₂*(k) are variable nodeindexes 205 such that |β_(kj) ₁ _(*) ^((l+1))| and |β_(kj) ₂ _(*)^((l+1))| are the first and the second minimum of

$\min\limits_{j \in {V{(k)}}}{{\beta_{k\; j}^{({l + 1})}}.}$

For the initial condition of 1=L, Equation (8) is as follows:

$\begin{matrix}{\alpha_{ij}^{(L)} = {{\left( {\prod\limits_{j^{\prime} \in {{V{(i)}}\backslash j}}{{sign}\;\left( \beta_{{ij}^{\prime}}^{(L)} \right)}} \right)\;{\max\left( {{{\min\limits_{j^{\prime} \in {{V{(i)}}\backslash j}}{\beta_{{ij}^{\prime}}^{(L)}}} - w_{i}^{(L)}},0} \right)}\mspace{14mu}{and}{\;\mspace{11mu}}\gamma_{j}} = {\lambda_{j} + {\sum\limits_{i^{\prime} \in {C{(j)}}}\alpha_{i^{\prime}j}^{(l)}}}}} & (8)\end{matrix}$

Therefore, the update rule for

$\frac{\partial J}{\partial\alpha_{ij}^{(l)}}$does not follow directly as for the case of l<L but instead,

$\frac{\partial J}{\partial\alpha_{ij}^{(l)}}$may be computed from the previous relationship for i 203, j 205 withh_(ij)=1 as in Equation (9) as follows:

$\begin{matrix}{\frac{\partial J}{\partial\alpha_{ij}^{(L)}} = {{\frac{\partial J}{\partial\gamma_{j}}\frac{\partial\gamma_{j}}{\partial a_{ij}^{(L)}}} = {\frac{\partial J}{\partial\gamma_{j}} = \left\lbrack {\nabla_{\Gamma}J} \right\rbrack_{j}}}} & (9)\end{matrix}$

FIG. 3 is an illustration of parallel BP decoder 300 and gradientcalculations with update rules, according to one embodiment.

Referring to FIG. 3, the BP and backpropagation processes aresummarized, where j 301 is a variable node, and where i 303 is a checknode.

FIG. 4 is an illustration of a sequential BP message flow, according toone embodiment.

Referring to FIG. 4, gradient calculations are extended to anyscheduling method, where j 401 and q 403 are variable nodes, and wherek₁ 405, i 407, and k₂ 409 are check nodes. A scheduling method is mainlydefined by an order of processing check nodes. Sequential scheduling isused as an example. However, the present disclosure may use anyscheduling method. In a similar manner to a parallel BP schedule, asequential BP method is illustrated in FIG. 4.

Sequential scheduling processes check-node by check-node. Therefore,after the processing of each check node, the processed messages are fedback to all connected variable nodes before processing the followingcheck nodes which is illustrated by the dashed lines with arrows. Agraphical interpretation of sequential BP decoding in described below ingreater detail.

Each sequential C2V update may be a sublayer within each of L layers ofa network, where each of the L layers have M sublayers representingL-iterations of M sequential C2V updates.

Additionally, each C2V message α_(ij) ^((l)) in the l-th layer has avirtual feedback to an associated incoming variable node (indicated bythe dotted lines with arrows).

The feedback C2Vs are used in V2C updates within the sublayers so longas the feedback C2Vs meet a causality constraint. That is, α_(k) ₁ _(j)^((l+1)) instead of α_(k) ₁ _(j) ^((l)) is used in β_(ij) ^((l+1))update if k₁<i.

A general update rule at iteration 1 is shown in Equations (10) and (11)as follows:

$\begin{matrix}{\alpha_{ij}^{(l)} = {\left( {\prod\limits_{j^{\prime} \in {{V{(i)}}\backslash j}}{{sign}\;\left( \beta_{{ij}^{\prime}}^{(l)} \right)}} \right)\;{\max\left( {{{\min\limits_{j^{\prime} \in {{V{(i)}}\backslash j}}{\beta_{{ij}^{\prime}}^{(l)}}} - w_{i}^{(l)}},0} \right)}}} & (10) \\{\beta_{kj}^{({l + 1})} = {\lambda_{j} + {\sum\limits_{\underset{i_{1} > k}{i_{1} \in {C{(j)}}}}\alpha_{i_{1}j}^{(l)}} + {\sum\limits_{\underset{i_{2} < k}{i_{2} \in {C{(j)}}}}\alpha_{i_{2}j}^{({l + 1})}}}} & (11)\end{matrix}$

Compared to the parallel BP decoding case, Δ_(α,ij) ^((l)) may bemodified in Equation (12) as follows:

$\begin{matrix}{\Delta_{\alpha,{ij}}^{(l)} = {\frac{\partial J}{\partial\alpha_{ij}^{(l)}} = {{\sum\limits_{\underset{k_{1} < i}{k_{1} \in {C{(j)}}}}{\frac{\partial J}{\partial\beta_{k_{1}j}^{({l + 1})}}\frac{\partial\beta_{k_{1}j}^{({l + 1})}}{\partial\alpha_{ij}^{(l)}}{\sum\limits_{\underset{k_{2} > i}{k_{2} \in {C{(j)}}}}{\frac{\partial J}{\partial\beta_{k_{2}j}^{(l)}}\frac{\partial\beta_{k_{2}j}^{(l)}}{\partial\alpha_{ij}^{(l)}}}}}} = {{\sum\limits_{\underset{k_{1} < i}{k_{1} \in {C{(j)}}}}\Delta_{\beta,{k_{1}j}}^{({l + 1})}} + {\sum\limits_{\underset{k_{2} > i}{k_{2} \in {C{(j)}}}}\Delta_{\beta,{k_{1}j}}^{(l)}}}}}} & (12)\end{matrix}$

The initial condition of the backpropagation process may be the onlyinitial condition that must be dealt with carefully, where Equations(13) and (14) as follows:

$\begin{matrix}{\beta_{kj}^{(L)} = {\lambda_{j} + {\sum\limits_{\underset{i_{1} > k}{i_{1} \in {C{(j)}}}}\alpha_{i_{1}j}^{({L - 1})}} + {\sum\limits_{\underset{i_{2} < k}{i_{2} \in {C{(j)}}}}\alpha_{i_{2}j}^{(L)}}}} & (13)\end{matrix}$γ_(j)=λ_(j)+Σ_(i′∈C(j))α_(i′j) ^((L))  (14)

Equations (15) and (16) are as follows:

$\begin{matrix}{\Delta_{a,{ij}}^{(L)} = {{{\frac{\partial J}{\partial\gamma_{j}}\frac{\partial\gamma_{j}}{\partial a_{ij}^{(L)}}} + {\sum\limits_{\underset{k > i}{k \in {C{(j)}}}}{\frac{\partial J}{\partial\beta_{kj}^{(L)}}\frac{\partial\beta_{kj}^{(L)}}{\partial\alpha_{ij}^{(L)}}}}} = {\left\lbrack {\nabla_{\Gamma}J} \right\rbrack_{j} + {\sum\limits_{\underset{k > i}{k \in {C{(j)}}}}\Delta_{\beta,{kj}}^{(L)}}}}} & (15) \\\left. {\Delta_{\beta,{ij}}^{(L)} = {g\left( {\beta_{{ij}_{1}^{*}}^{(L)},\beta_{{ij}_{2}^{*}}^{(L)},{\Delta_{a,{in}^{\prime}}^{(L)}a_{in}^{(L)}}} \right.}_{n \in {V{(i)}}}} \right) & (16)\end{matrix}$

Error functions that match BER and BLER are described below.

Equation (17) is a cross entropy error function as follows:

$\begin{matrix}{{{H\left( {t,\gamma} \right)} = {{- {\sum\limits_{i = 1}^{n}{t_{i}\log{\sigma\left( \gamma_{i} \right)}}}} + {\left( {1 - t_{i}} \right){\log\left( {1 - {\sigma\left( \gamma_{i} \right)}} \right)}}}},} & (17)\end{matrix}$where t_(i) is a true bit at location i which may be regarded as a genietransmitted bit, and

${{\sigma\left( \gamma_{i} \right)} = \frac{1}{1 + e^{- \gamma_{i}}}},$and n is a codeword length, where n is an integer.

Equation (18) is a mean square error (MSE) error function as follows:

$\begin{matrix}{{MSE} = {\frac{1}{2n}{\sum\limits_{i = 1}^{n}\left( {t_{i} - {\sigma\left( \gamma_{i} \right)}} \right)^{2}}}} & (18)\end{matrix}$

Equation (19) is a p-norm error function as follows:

$\begin{matrix}{{pnorm}{= {\frac{1}{pn}\sqrt[p]{\sum\limits_{i = 1}^{n}\left( {t_{i} - {\sigma\left( \gamma_{i} \right)}} \right)^{p}}}}} & (19)\end{matrix}$

In order to identify a reasonable cost function for a given purpose, biterror rate (BER) performance and block error rate (BLER) performancewith an offset value may be considered. The BLER and the BER versus theoffset value for a new radio LDPC (NR-LDPC) code with base-graph−1, mayhave a code rate of 0.9176 and a lifting factor of 16. In this case,

${\arg\;{\min\limits_{offset}{BER}}} \neq {\arg\;{\min\limits_{offset}{{BLER}.}}}$

To minimize a BER, the cross-entropy function and the MSE function aregood candidates for a cost function, while the large norm cost functionsuch as a 10-norm cost function is a good candidate for minimizing aBLER.

An offset value exhibits convergence behavior under parallel andsequential BP with different initial offset values.

Since possible code parameters such as code rate may take manypossibilities, determining an optimal offset value for each codeparameter and channel condition might become a computational burdenwhich requires a large lookup table to store the optimal offset valuefor each transmission environment.

According to one embodiment, the present system and method providesonline learning where an offset value may be learned during the actualtransmission depending on the environment setup at the time of learning.The present disclosure may provide a larger search space where theoffset value may be different at each iteration and at each check nodeand train the offset values with a different environment setup to findoffset values that are good for all cases.

Online learning as described below with reference to FIG. 5 may be usedto determine an optimal offset value during a transmission. In oneembodiment, a transmission environment such as code parameters andchannel conditions may be fixed for a sufficient time to enable learningin a certain case (e.g., an NR LDPC standard). For example, during onetransport block transmission in NR which may contain up to 400 codeblocks, code parameters and channel conditions may be fixed over all thecode blocks. However, learning requires knowledge of a correct codewordas well. Therefore, a receiver requires a correct codeword to performgradient calculations. A cyclic-redundancy-check (CRC) may be used todetermine a correct codeword. The correctness of decoding a codeword ischecked via a CRC. With very high probability, a codeword that passes aCRC is a correct codeword and may be used in gradient calculations. Twoapproaches for online learning including progressive learning andfeedback learning are described below in greater detail with referenceto FIGS. 6 and 7.

FIG. 5 is a flowchart of an online learning method, according to oneembodiment.

Referring to FIG. 5, at 501, a decoder receives code blocks (e.g., codeblocks or codewords) of a transport block, an initial value of an offsetvalue is set (e.g., 0.5), and the online learning method proceeds to503.

At 503, the decoder decodes a code block and the online learning methodproceeds to 605.

At 505, an offset value updater updates the offset value and the onlinelearning method either proceeds to 503 for additional processing ofreceived code blocks or terminates.

FIG. 6 is a flowchart of a progressive learning method, according to oneembodiment.

Referring to FIG. 6, at 601, a decoder receives code blocks (e.g., codeblocks or codewords) of a transport block, an index i is set to 1 in acounter, an initial value of an offset value is set (e.g., 0.5), and theprogressive learning method proceeds to 603.

At 603, the decoder decodes a code block with index i, a cyclicredundancy checker performs a CRC on code block i, and the progressivelearning method proceeds to 605.

At 605, the method determines whether code block i passes the CRC in thecyclic redundancy checker or not. If code block i does not pass the CRCin the cyclic redundancy checker, the progressive learning methodproceeds to 607. Otherwise, the progressive learning method proceeds to609.

At 607, a counter increments index i (e.g., i is set to i+1) and theprogressive learning method returns to 603.

At 609, the method adds code block i to a learning batch (e.g., codeblock i is stored in a memory) and the progressive learning methodproceeds to 611.

At 611, a modulo function block performs i modulo x, and a comparatordetermines whether i modulo x is equal to 0, where x is a predeterminedinteger, and where the modulo function may be referred to as “MOD” or bya percentage symbol “%.” If i modulo x is not equal to 0, whichindicates that x code blocks have not passed the CRC, the progressivelearning method proceeds to 607. Otherwise, the progressive learningmethod proceeds to 613, which indicates that x code blocks have passedthe CRC. The decoder starts with the initial offset value (e.g., 0.5)then during the progressive learning method, the offset value is updatedafter every x code blocks are correctly decoded, where the updatedoffset value may be updated after the next x code blocks are correctlydecoded. Based on the results, an optimal value for x may be determined.

At 613, a gradient calculator calculates a gradient of a pre-determinederror function, updates an offset value based on the calculatedgradient, clears the learning batch (e.g., the code blocks stored in thelearning batch are erased), and the progressive learning method eitherproceeds to 607 for additional processing of received code blocks orterminates.

FIG. 7 is a flowchart of a feedback learning method, according to oneembodiment.

Referring to FIG. 7, at 701, a decoder receives code blocks (e.g., codeblocks or codewords) of a transport block, an index i is set to 1 in acounter, an initial value of an offset value is set (e.g., 0.5), and thefeedback learning method proceeds to 703.

At 703, the decoder decodes a code block with index i, a cyclicredundancy checker performs a CRC on code block i, and the feedbacklearning method proceeds to 705.

At 705, the cyclic redundancy checker determines whether code block ipasses the CRC or not. If code block i does not pass the CRC in thecyclic redundancy checker, the feedback learning method proceeds to 707.Otherwise, the feedback learning method proceeds to 709.

At 707, the method saves index i to a list F (e.g., index i is stored ina memory) and the feedback learning method proceeds to 711.

At 709, the method adds code block i to a learning batch (e.g., codeblock i is stored in the memory) and the feedback learning methodproceeds to 711.

At 711, a comparator determines whether i is equal to a number of codeblocks in the transport block. If i is not equal to the number of codeblocks in the transport block, the feedback learning method proceeds to713. Otherwise, the feedback learning method proceeds to 715.

At 713, a counter increments index i (e.g., i is set to i+1) and thefeedback learning method returns to 703.

At 715, a gradient calculator calculates a gradient on a pre-determinederror function, updates the offset value based on the calculatedgradient, and the feedback learning method proceeds to 717.

At 717, the decoder decodes each code block with an index i in the listF and the feedback learning method terminates.

In the feedback learning method, the decoder decodes all of the codeblocks in the transport block using an initial offset value (e.g., 0.5).Then, an updated offset value is learned from all of the correctlydecoded code blocks. Then, the decoder re-attempts to decode the codeblocks that previously failed to be decoded (i.e., the code blocks forwhich the CRC did not pass) using the newly learned offset value.

FIG. 8 is a flowchart of a method of updating an offset value in a largesearch space under different transmission environments, according to oneembodiment.

Referring to FIG. 8, a method of updating an offset value that may beused in all scenarios is illustrated. In the method, the offset searchspace is increased by allowing a different offset value at each checknode in each iteration. That is, the offset value is updated using alarge space of offset values and a mix of transmission environments(e.g., different code rates).

At 801, the method selects a transmission environment (e.g., a coderate) and an initial offset value (e.g., 0.5) and the method proceeds to803.

At 803, a code generator generates an LDPC code according the selectedtransmission environment and the method proceeds to 805.

At 805, the method selects a channel (e.g., an additive white Gaussiannoise (AWGN) channel) and the method proceeds to 807.

At 807, a decoder decodes the LDPC code using BP decoding and the methodproceeds to 809.

At 809, the method applies backpropagation to the LDPC code, a gradientcalculator calculates gradients of a predetermined error function, andthe method proceeds to 811.

At 811, the method updates the offset values based on the gradientscalculated by the gradient calculator and the method proceeds to 813.

At 813, the method determines if a stop criteria is met. If a stopcriteria is not met, the method returns to 801. Otherwise, the methodproceeds to 815.

At 815, the updated offset values are used and the method is terminated.

FIG. 9 is an apparatus 900 for online learning, according to anembodiment.

Referring to FIG. 9, the apparatus 900 includes a decoder 901 and anoffset value updater 903.

The decoder 901 includes a first input for receiving transport blocks(e.g., code blocks or codewords), a second input for receiving aninitial offset value (e.g., 0.5), a third input for receiving an updatedoffset value, a fourth input for receiving an index for a next codeblock of the received transport blocks to be decoded by the decoder 901,and an output.

The offset value updater 903 includes an input connected to the outputof the decoder 901, a first output connected to the fourth input of thedecoder 901 for providing an index for a next code block of the receivedtransport blocks to be decoded by the decoder 901, and a second outputconnected to the third input of the decoder 901 for providing an updatedoffset value to be used by the decoder 901 to decode the next code blockof the received transport blocks.

FIG. 10 is an apparatus for the offset value updater 903 of FIG. 9 forprogressive learning, according to an embodiment.

Referring to FIG. 10, the offset value updater 903 includes a CRC device1003, a counter 1005, a memory 1007, a modulus device 1009, and gradientcalculator 1011.

The CRC device 1003 includes an input for receiving a decoded code wordand determining whether the decoded codeword passes or fails acyclic-redundancy-check, a first output for indicating that a decodedcodeword fails a cyclic-redundancy-check, and a second output forindicating that a decoded codeword passes a cyclic-redundancy-check.

The counter 1005 includes a first input connected to the first output ofthe CRC device 1003 to indicate that a decoded codeword has not passed acyclic-redundancy-check and an index should be incremented to indicate anext codeword to be decoded, a second input for receiving an indicationthat a certain number x of decoded codewords has passed acyclic-redundancy-check and an index should be incremented to indicate anext codeword to be decoded, a third input for receiving an indicationthat an offset value is updated and an index should be incremented toindicate a next codeword to be decoded, and an output for outputting anincremented index that indicates a next codeword to be decoded.

The memory 1007 includes a first input connected to the second output ofthe CRC device 1003 for storing each decoded codeword that passes acyclic-redundancy-check (e.g., adding each decoded codeword that passesa cyclic-redundancy-check to a learning batch), a second input forreceiving an indication to erase the memory after an offset value isupdated (e.g., clear the learning batch), and an output to provide thestored decoded codewords that passed a cyclic-redundancy-check (e.g.,provide the learning batch).

The modulus device 1009 includes a first input for receiving x, where xis an integer that indicates how many decoded codewords must pass acyclic-redundancy-check before an offset value is updated, a secondinput connected to the second output of the CRC device 1003, a firstoutput connected to the second input of the counter 1005 for indicatingthat x decoded codewords have not passed a cyclic-redundancy-check, anda second output for indicating that x decoded codewords have passed acyclic-redundancy-check.

The gradient calculator 1011 includes a first input connected to thesecond output of the modulus device 1009 for receiving an indicationthat x decoded codewords have passed a cyclic-redundancy-check and thatthe gradient calculator 1011 is to calculate a gradient of an errorfunction of a decoder and update an offset value based on the calculatedgradient, a second input connected to the output of the memory 1007 toreceive the decoded codewords that passed a cyclic-redundancy-check(e.g., receive the learning batch), a first output connected to thesecond input of the memory 1007 for erasing the memory 1007 (e.g.,clearing the learning batch), a second output connected to the thirdinput of the counter 1005 for incrementing the index that indicates anext codeword to be decoded, and a third output for outputting anupdated offset value.

FIG. 11 is an apparatus for the offset value updater 903 of FIG. 9 forfeedback learning, according to an embodiment.

Referring to FIG. 11, the offset value updater 903 includes a CRC device1103, a memory 1105, a comparator 1107, a counter 1109, and gradientcalculator 1111.

The CRC device 1103 includes an input for receiving a decoded code wordand determining whether the decoded codeword passes or fails acyclic-redundancy-check, a first output for indicating that a decodedcodeword fails a cyclic-redundancy-check, and a second output forindicating that a decoded codeword passes a cyclic-redundancy-check.

The memory 1105 includes a first input connected to the first output ofthe CRC device 1103 for storing each decoded codeword that fails acyclic-redundancy-check (e.g., adding each decoded codeword that fails acyclic-redundancy-check to a failed list or F list), a second inputconnected to the second output of the CRC device 1103 for storing eachdecoded codeword that passes a cyclic-redundancy-check (e.g., addingeach decoded codeword that passes a cyclic-redundancy-check to alearning batch), a third input for receiving an indication to erase thememory after an offset value is updated (e.g., clear the F list and thelearning batch), and an output to provide the stored decoded codewordsthat failed a cyclic-redundancy-check (e.g., provide the F list) and thestored decoded codewords that passed a cyclic-redundancy-check (e.g.,provide the learning batch).

The comparator 1107 includes a first input for receiving x, where x isan integer that indicates a number of codewords in a transport block, asecond input connected to the first output of the CRC device 1103 toindicate that a decoded codeword has failed a cyclic-redundancy-check, athird input connected to the second output of the CRC device 1103 toindicate that a decoded codeword has passed a cyclic-redundancy-check, afirst output for indicating that all of the codewords in a transporthave not been decoded, and a second output for indicating that all ofthe codewords in a transport have been decoded. The comparator 1107 addsa number of decoded codewords that failed the cyclic-redundancy-check toa number of decoded codewords that passed the cyclic-redundancy-checkand compares the sum to x to determine if all of the codewords in atransport block have been decoded or not.

The counter 1109 includes an input connected to the first output of thecomparator 1107 for receiving an indication that not all of thecodewords in a transport block have been decoded, and an output foroutputting an incremented index to indicate a next codeword to bedecoded. The counter 1109 increments an index to indicate a nextcodeword to be decoded.

The gradient calculator 1111 includes a first input connected to thesecond output of the comparator 1107 for receiving an indication thatall of the codewords in a transport block have been decoded, a secondinput connected to the output of the memory 1105 to receive the decodedcodewords that failed a cyclic-redundancy-check (e.g., receive the Flist) and the decoded codewords that passed a cyclic-redundancy-check(e.g., receive the learning batch), a first output connected to thethird input of the memory 1105 for erasing the memory 1105 (e.g.,clearing the F list and the learning batch), and a second output foroutputting an updated offset value to be used for a next transport blockand the decoded codewords that failed a cyclic-redundancy-check (e.g.,the F list) to be decoded using the updated offset value.

FIG. 12 is an apparatus 1200 for feedback learning, according to anembodiment.

Referring to FIG. 12, the apparatus 1200 includes a first decoder 1201,an offset value updater 1203, and a second decoder 1205.

first decoder 1201 includes a first input for receiving transport blocks(e.g., code blocks or codewords), a second input for receiving aninitial offset value (e.g., 0.5), a third input for receiving an updatedoffset value, a fourth input for receiving an index for a next codeblock of the received transport blocks to be decoded by the firstdecoder 1201, and an output.

The offset value updater 1203 includes an input connected to the outputof the first decoder 1201, a first output connected to the fourth inputof the first decoder 1201 for providing an index for a next code blockof the received transport blocks to be decoded by the first decoder1201, and a second output connected to the third input of the firstdecoder 1201 for providing an updated offset value to be used by thefirst decoder 1201 to decode the next code block of the receivedtransport blocks. The offset value updater 1203 may be the offset valueupdater 903 of FIG. 11.

The second decoder 1205 includes a first input connected to the firstinput of the first decoder 1201 for receiving the received transportblocks (e.g., code blocks or codewords), a second input connected to theoutput of the offset value updater 1203, and an output.

In order to find offset values that are good for two different coderates, during the training phase, the offset value is trained under twodifferent cases, a high code rate and a low code rate.

For example, a case may be where an LDPC code is constructed from 24check nodes at a signal to noise ratio (SNR) of 2.5 dB.

For example, a case may be where an LDPC code is constructed from 46check nodes at an SNR of 0.5 dB.

Table 1 below is a summary of BLER results at the specified SNR when theoffset is trained specifically for the case and when the offset istrained via a mix of two rates.

TABLE 1 Each case Training is Fixed offset individually performed via amix of 0.5 trained of the two cases Case 1 (24 check 6.66e−2  4.8e−2  5.6e−2 nodes, SNR = 2.5 dB) Case 2 (46 check 2.49e−2 1.94e−2 1.9769e−2nodes, SNR = 0.5 dB)

Table 1 above shows that if the offset is trained for a mix of theinputs, the result is almost invariant for Case 2 while some loss inperformance is expected for Case 1 but is still better than a fixedoffset value of 0.5. Thus, the offset value can be updated with mixedinputs to be used in different scenarios.

In order to update an offset value over different iterations, a largenumber of iterations may be used (e.g., 5 or 6 iterations).

According to one embodiment, the present system and method for decodingLDPC codes, via online learning during transmission of LDPC codes, by aBP decoder and a corresponding backpropagation network includesreceiving a code block including LPDC codes; performing BP decoding ofthe code block using OMS decoding and an initial offset value;performing a CRC on the decoded code block; in response to the decodedcode block passing CRC, adding the code block to a set of learningblocks; and applying belief backpropagation to the set of learningblocks to update the offset value by at least calculating a gradient ofan error function of the decoder with respect to the offset value,updating the offset value in a direction that reduces an error output ofthe error function, and clearing the set of learning blocks.

According to another embodiment, the present system and method offinding optimal offset values for decoding LDPC codes by a BP decoderand a corresponding backpropagation network includes receiving LPDCcodes, generated according to a transmission environment, transmittedover a channel; performing BP decoding of the code block using OMSdecoding and an initial offset value; and applying backpropagation tothe code block to update the offset value by at least calculating agradient of an error function of the decoder with respect to the offsetvalue, updating the offset value in a direction that reduces an erroroutput of the error function, evaluating the updated offset valueagainst a criterion to determine whether the updated offset value issufficiently optimized, and in response to determining that the updatedoffset value is sufficiently optimized, using the updated offset valueto decode subsequent LPDC codes.

FIG. 13 is a block diagram illustrating an electronic device 1301 in anetwork environment 1300 according to various embodiments.

Referring to FIG. 13, the electronic device 1301 in the networkenvironment 1300 may communicate with an electronic device 1302 via afirst network 1398 (e.g., a short-range wireless communication network),or an electronic device 1304 or a server 1308 via a second network 1399(e.g., a long-range wireless communication network). According to anembodiment, the electronic device 1301 may communicate with theelectronic device 1304 via the server 1308. According to an embodiment,the electronic device 1301 may include a processor 1320, memory 1330, aninput device 1350, a sound output device 1355, a display device 1360, anaudio module 1370, a sensor module 1376, an interface 1377, a hapticmodule 1379, a camera module 1380, a power management module 1388, abattery 1389, a communication module 1390, a subscriber identificationmodule (SIM) 1396, or an antenna module 1397. In some embodiments, atleast one (e.g., the display device 1360 or the camera module 1380) ofthe components may be omitted from the electronic device 1301, or one ormore other components may be added in the electronic device 1301. Insome embodiments, some of the components may be implemented as singleintegrated circuitry. For example, the sensor module 1376 (e.g., afingerprint sensor, an iris sensor, or an illuminance sensor) may beimplemented as embedded in the display device 1360 (e.g., a display).

The processor 1320 may execute, for example, software (e.g., a program1340) to control at least one other component (e.g., a hardware orsoftware component) of the electronic device 1301 coupled with theprocessor 1320, and may perform various data processing or computation.According to one embodiment, as at least part of the data processing orcomputation, the processor 1320 may load a command or data received fromanother component (e.g., the sensor module 1376 or the communicationmodule 1390) in volatile memory 1332, process the command or the datastored in the volatile memory 1332, and store resulting data innon-volatile memory 1334. According to an embodiment, the processor 1320may include a main processor 1321 (e.g., a central processing unit (CPU)or an application processor (AP)), and an auxiliary processor 1323(e.g., a graphics processing unit (GPU), an image signal processor(ISP), a sensor hub processor, or a communication processor) that isoperable independently from, or in conjunction with, the main processor1321. Additionally or alternatively, the auxiliary processor 1323 may beadapted to consume less power than the main processor 1321, or to bespecific to a specified function. The auxiliary processor 1323 may beimplemented as separate from, or as part of the main processor 1321.

The auxiliary processor 1323 may control at least some of functions orstates related to at least one component (e.g., the display device 1360,the sensor module 1376, or the communication module 1390) among thecomponents of the electronic device 1301, instead of the main processor1321 while the main processor 1321 is in an inactive (e.g., sleep)state, or together with the main processor 1321 while the main processor1321 is in an active state (e.g., executing an application). Accordingto an embodiment, the auxiliary processor 1323 (e.g., an image signalprocessor or a communication processor) may be implemented as part ofanother component (e.g., the camera module 1380 or the communicationmodule 1390) functionally related to the auxiliary processor 1323.

The memory 1330 may store various data used by at least one component(e.g., the processor 1320 or the sensor module 1376) of the electronicdevice 1301. The various data may include, for example, software (e.g.,the program 1340) and input data or output data for a command relatedthereto. The memory 1330 may include the volatile memory 1332 or thenon-volatile memory 1334.

The program 1340 may be stored in the memory 1330 as software, and mayinclude, for example, an operating system (OS) 1342, middleware 1344, oran application 1346.

The input device 1350 may receive a command or data to be used byanother component (e.g., the processor 1320) of the electronic device1301, from the outside (e.g., a user) of the electronic device 1301. Theinput device 1350 may include, for example, a microphone, a mouse, akeyboard, or a digital pen (e.g., a stylus pen).

The sound output device 1355 may output sound signals to the outside ofthe electronic device 1301. The sound output device 1355 may include,for example, a speaker or a receiver. The speaker may be used forgeneral purposes, such as playing multimedia or playing record, and thereceiver may be used for an incoming calls. According to an embodiment,the receiver may be implemented as separate from, or as part of thespeaker.

The display device 1360 may visually provide information to the outside(e.g., a user) of the electronic device 1301. The display device 1360may include, for example, a display, a hologram device, or a projectorand control circuitry to control a corresponding one of the display,hologram device, and projector. According to an embodiment, the displaydevice 1360 may include touch circuitry adapted to detect a touch, orsensor circuitry (e.g., a pressure sensor) adapted to measure theintensity of force incurred by the touch.

The audio module 1370 may convert a sound into an electrical signal andvice versa. According to an embodiment, the audio module 1370 may obtainthe sound via the input device 1350, or output the sound via the soundoutput device 1355 or a headphone of an external electronic device(e.g., an electronic device 1302) directly (e.g., wired) or wirelesslycoupled with the electronic device 1301.

The sensor module 1376 may detect an operational state (e.g., power ortemperature) of the electronic device 1301 or an environmental state(e.g., a state of a user) external to the electronic device 1301, andthen generate an electrical signal or data value corresponding to thedetected state. According to an embodiment, the sensor module 1376 mayinclude, for example, a gesture sensor, a gyro sensor, an atmosphericpressure sensor, a magnetic sensor, an acceleration sensor, a gripsensor, a proximity sensor, a color sensor, an infrared (IR) sensor, abiometric sensor, a temperature sensor, a humidity sensor, or anilluminance sensor.

The interface 1377 may support one or more specified protocols to beused for the electronic device 1301 to be coupled with the externalelectronic device (e.g., the electronic device 1302) directly (e.g.,wired) or wirelessly. According to an embodiment, the interface 1377 mayinclude, for example, a high definition multimedia interface (HDMI), auniversal serial bus (USB) interface, a secure digital (SD) cardinterface, or an audio interface.

A connecting terminal 1378 may include a connector via which theelectronic device 1301 may be physically connected with the externalelectronic device (e.g., the electronic device 1302). According to anembodiment, the connecting terminal 1378 may include, for example, aHDMI connector, a USB connector, a SD card connector, or an audioconnector (e.g., a headphone connector).

The haptic module 1379 may convert an electrical signal into amechanical stimulus (e.g., a vibration or a movement) or electricalstimulus which may be recognized by a user via his tactile sensation orkinesthetic sensation. According to an embodiment, the haptic module1379 may include, for example, a motor, a piezoelectric element, or anelectric stimulator.

The camera module 1380 may capture a still image or moving images.According to an embodiment, the camera module 1380 may include one ormore lenses, image sensors, image signal processors, or flashes.

The power management module 1388 may manage power supplied to theelectronic device 1301. According to one embodiment, the powermanagement module 1388 may be implemented as at least part of, forexample, a power management integrated circuit (PMIC).

The battery 1389 may supply power to at least one component of theelectronic device 1301. According to an embodiment, the battery 1389 mayinclude, for example, a primary cell which is not rechargeable, asecondary cell which is rechargeable, or a fuel cell.

The communication module 1390 may support establishing a direct (e.g.,wired) communication channel or a wireless communication channel betweenthe electronic device 1301 and the external electronic device (e.g., theelectronic device 1302, the electronic device 1304, or the server 1308)and performing communication via the established communication channel.The communication module 1390 may include one or more communicationprocessors that are operable independently from the processor 1320(e.g., the AP) and supports a direct (e.g., wired) communication or awireless communication. According to an embodiment, the communicationmodule 1390 may include a wireless communication module 1392 (e.g., acellular communication module, a short-range wireless communicationmodule, or a global navigation satellite system (GNSS) communicationmodule) or a wired communication module 1394 (e.g., a local area network(LAN) communication module or a power line communication (PLC) module).A corresponding one of these communication modules may communicate withthe external electronic device via the first network 1398 (e.g., ashort-range communication network, such as Bluetooth™, wireless-fidelity(Wi-Fi) direct, or Infrared Data Association (IrDA)) or the secondnetwork 1399 (e.g., a long-range communication network, such as acellular network, the Internet, or a computer network (e.g., LAN or widearea network (WAN)). These various types of communication modules may beimplemented as a single component (e.g., a single chip), or may beimplemented as multi components (e.g., multi chips) separate from eachother. The wireless communication module 1392 may identify andauthenticate the electronic device 1301 in a communication network, suchas the first network 1398 or the second network 1399, using subscriberinformation (e.g., international mobile subscriber identity (IMSI))stored in the subscriber identification module 1396.

The antenna module 1397 may transmit or receive a signal or power to orfrom the outside (e.g., the external electronic device) of theelectronic device 1301. According to an embodiment, the antenna module1397 may include an antenna including a radiating element composed of aconductive material or a conductive pattern formed in or on a substrate(e.g., PCB). According to an embodiment, the antenna module 1397 mayinclude a plurality of antennas. In such a case, at least one antennaappropriate for a communication scheme used in the communicationnetwork, such as the first network 1398 or the second network 1399, maybe selected, for example, by the communication module 1390 (e.g., thewireless communication module 1392) from the plurality of antennas. Thesignal or the power may then be transmitted or received between thecommunication module 1390 and the external electronic device via theselected at least one antenna. According to an embodiment, anothercomponent (e.g., a radio frequency integrated circuit (RFIC)) other thanthe radiating element may be additionally formed as part of the antennamodule 1397.

At least some of the above-described components may be coupled mutuallyand communicate signals (e.g., commands or data) therebetween via aninter-peripheral communication scheme (e.g., a bus, general purposeinput and output (GPIO), serial peripheral interface (SPI), or mobileindustry processor interface (MIPI)).

According to an embodiment, commands or data may be transmitted orreceived between the electronic device 1301 and the external electronicdevice 1304 via the server 1308 coupled with the second network 1399.Each of the electronic devices 1302 and 1304 may be a device of a sametype as, or a different type, from the electronic device 1301. Accordingto an embodiment, all or some of operations to be executed at theelectronic device 1301 may be executed at one or more of the externalelectronic devices 1302, 1304, or 1308. For example, if the electronicdevice 1301 should perform a function or a service automatically, or inresponse to a request from a user or another device, the electronicdevice 1301, instead of, or in addition to, executing the function orthe service, may request the one or more external electronic devices toperform at least part of the function or the service. The one or moreexternal electronic devices receiving the request may perform the atleast part of the function or the service requested, or an additionalfunction or an additional service related to the request, and transferan outcome of the performing to the electronic device 1401. Theelectronic device 1301 may provide the outcome, with or without furtherprocessing of the outcome, as at least part of a reply to the request.To that end, a cloud computing, distributed computing, or client-servercomputing technology may be used, for example.

The electronic device according to various embodiments may be one ofvarious types of electronic devices. The electronic devices may include,for example, a portable communication device (e.g., a smartphone), acomputer device, a portable multimedia device, a portable medicaldevice, a camera, a wearable device, or a home appliance. According toan embodiment of the disclosure, the electronic devices are not limitedto those described above.

It should be appreciated that various embodiments of the presentdisclosure and the terms used therein are not intended to limit thetechnological features set forth herein to particular embodiments andinclude various changes, equivalents, or replacements for acorresponding embodiment. With regard to the description of thedrawings, similar reference numerals may be used to refer to similar orrelated elements. It is to be understood that a singular form of a nouncorresponding to an item may include one or more of the things, unlessthe relevant context clearly indicates otherwise. As used herein, eachof such phrases as “A or B,” “at least one of A and B,” “at least one ofA or B,” “A, B, or C,” “at least one of A, B, and C,” and “at least oneof A, B, or C,” may include any one of, or all possible combinations ofthe items enumerated together in a corresponding one of the phrases. Asused herein, such terms as “1st” and “2nd,” or “first” and “second” maybe used to simply distinguish a corresponding component from another,and does not limit the components in other aspect (e.g., importance ororder). It is to be understood that if an element (e.g., a firstelement) is referred to, with or without the term “operatively” or“communicatively”, as “coupled with,” “coupled to,” “connected with,” or“connected to” another element (e.g., a second element), it means thatthe element may be coupled with the other element directly (e.g.,wired), wirelessly, or via a third element.

As used herein, the term “module” may include a unit implemented inhardware, software, or firmware, and may interchangeably be used withother terms, for example, “logic,” “logic block,” “part,” or“circuitry”. A module may be a single integral component, or a minimumunit or part thereof, adapted to perform one or more functions. Forexample, according to an embodiment, the module may be implemented in aform of an application-specific integrated circuit (ASIC).

Various embodiments as set forth herein may be implemented as software(e.g., the program 1340) including one or more instructions that arestored in a storage medium (e.g., internal memory 1336 or externalmemory 1338) that is readable by a machine (e.g., the electronic device1301). For example, a processor 1320 of the machine (e.g., theelectronic device 1301) may invoke at least one of the one or moreinstructions stored in the storage medium, and execute it, with orwithout using one or more other components under the control of theprocessor. This allows the machine to be operated to perform at leastone function according to the at least one instruction invoked. The oneor more instructions may include a code generated by a complier or acode executable by an interpreter. The machine-readable storage mediummay be provided in the form of a non-transitory storage medium. Wherein,the term “non-transitory” simply means that the storage medium is atangible device, and does not include a signal (e.g., an electromagneticwave), but this term does not differentiate between where data issemi-permanently stored in the storage medium and where the data istemporarily stored in the storage medium.

According to an embodiment, a method according to various embodiments ofthe disclosure may be included and provided in a computer programproduct. The computer program product may be traded as a product betweena seller and a buyer. The computer program product may be distributed inthe form of a machine-readable storage medium (e.g., compact disc readonly memory (CD-ROM)), or be distributed (e.g., downloaded or uploaded)online via an application store (e.g., PlayStore™), or between two userdevices (e.g., smart phones) directly. If distributed online, at leastpart of the computer program product may be temporarily generated or atleast temporarily stored in the machine-readable storage medium, such asmemory of the manufacturer's server, a server of the application store,or a relay server.

According to various embodiments, each component (e.g., a module or aprogram) of the above-described components may include a single entityor multiple entities. According to various embodiments, one or more ofthe above-described components may be omitted, or one or more othercomponents may be added. Alternatively or additionally, a plurality ofcomponents (e.g., modules or programs) may be integrated into a singlecomponent. In such a case, according to various embodiments, theintegrated component may still perform one or more functions of each ofthe plurality of components in the same or similar manner as they areperformed by a corresponding one of the plurality of components beforethe integration. According to various embodiments, operations performedby the module, the program, or another component may be carried outsequentially, in parallel, repeatedly, or heuristically, or one or moreof the operations may be executed in a different order or omitted, orone or more other operations may be added.

Although certain embodiments of the present disclosure have beendescribed in the detailed description of the present disclosure, thepresent disclosure may be modified in various forms without departingfrom the scope of the present disclosure. Thus, the scope of the presentdisclosure shall not be determined merely based on the describedembodiments, but rather determined based on the accompanying claims andequivalents thereto.

What is claimed is:
 1. An apparatus, comprising: a decoder, including afirst input configured to receive transport blocks, a second input, athird input, a fourth input, and an output configured to provide adecoded codeword, and an offset value updater, including an inputconnected to the output of the decoder, a first output connected to thethird input of the decoder configured to provide an updated offsetvalue, and a second output connected to the fourth input of the decoderconfigured to provide an index for a subsequent codeword to be decoded.2. The apparatus of claim 1, wherein the offset value updater comprises:a cyclic-redundancy-checker (CRC) including an input connected to theoutput of the decoder, a first output configured to indicate when adecoded codeword does not pass a cyclic-redundancy-check, and a secondoutput configured to indicate when the decoded codeword passes thecyclic-redundancy-check; a counter, including a first input connected tothe first output of the CRC, a second input, and an output configured toprovide the index for the next codeword to be decoded; a memory,including a first input connected to the second output of the CRC, asecond input, and an output configured to provide decoded codewords thatpass the cyclic-redundancy-check; a modulus device, including a firstinput for receiving an integer x, a second input connected to the secondoutput of the CRC, a first output configured to indicate that less thanx decoded codewords have passed the cyclic-redundancy-check, and asecond output configured to indicate when x decoded codewords havepassed the cyclic-redundancy-check; and a gradient calculator, includinga first input connected to the second output of the modulus device, asecond input connected to the output of the memory, a first outputconnected to the second input of the memory and configured to erase thememory, and an output connected to the third input of the decoder andconfigured to provide the updated offset value based on an errorfunction of the decoder.
 3. The apparatus of claim 1, wherein theinitial offset value is 0.5 and the index of the next codeword to bedecoded is initially set to
 1. 4. The apparatus of claim 2, wherein theerror function is a cross entropy error function.
 5. The apparatus ofclaim 2, wherein the error function is a mean square error function. 6.The apparatus of claim 2, wherein the error function is a p-norm errorfunction.
 7. The apparatus of claim 1, wherein the offset value updatercomprises: a cyclic-redundancy-checker (CRC) including an inputconnected to the output of the decoder, a first output configured toindicate when a decoded codeword does not pass acyclic-redundancy-check, and a second output configured to indicate whenthe decoded codeword passes the cyclic-redundancy-check; a memory,including a first input connected to the first output of the CRC, asecond input connected to the second output of the CRC, a third input,and an output configured to provide decoded codewords that fail and passthe cyclic-redundancy-check; a comparator, including a first input forreceiving an integer x, a second input connected to the first output ofthe CRC, a third input connected to the second output of the CRC, afirst output configured to indicate that less than x codewords aredecoded, and a second output configured to indicate when x decodedcodewords are decoded; a counter, including an input connected to thefirst output of the comparator, and an output configured to provide theindex for the next codeword to be decoded; and a gradient calculator,including a first input connected to the second output of thecomparator, a second input connected to the output of the memory, afirst output connected to the third input of the memory and configuredto erase the memory, and an output connected to the third input of thedecoder and configured to provide the updated offset value based on anerror function of the decoder and the decoded codewords that failed thecyclic-redundancy-check.
 8. The apparatus of claim 7, further comprisinga second decoder including a first input connected to the first input ofthe decoder, a second input connected to the output of the gradientcalculator and configured to receive the updated offset value and thedecoded codewords that failed the cyclic-redundancy-check, and an outputconfigured to re-decode the codewords that failed thecyclic-redundancy-check using the updated offset value.
 9. The apparatusof claim 7, wherein the error function is a cross entropy errorfunction.
 10. The apparatus of claim 7, wherein the error function is amean square error function.
 11. The apparatus of claim 7, wherein theerror function is a p-norm error function.
 12. A method, comprising:receiving, by a first decoder, a plurality of codewords, an offsetvalue, and an index that indicates which of the plurality of codewordsis to be decoded; decoding, by a second decoder, one of the plurality ofcodewords indicated by the index; and updating, by an offset valueupdater, the offset value.
 13. The method of claim 12, wherein updatingthe offset value comprises: indicating, by a cyclic-redundancy-checker(CRC), when a decoded one of the plurality of codeword does not pass andpasses a cyclic-redundancy-check; incrementing the index, by a counter,when the decoded one of the plurality of codeword fails thecyclic-redundancy-check or when a number of decoded codewords thatpasses the cyclic-redundancy-check is less than x, where x is aninteger; storing, by a memory, decoded codewords that pass thecyclic-redundancy-check; indicating, by a modulus device, when x decodedcodewords pass the cyclic-redundancy-check; and providing, by a gradientcalculator, an updated offset value based on an error function of thesecond decoder and erasing the memory.
 14. The method of claim 12,wherein an initial offset value is 0.5 and the index is initially setto
 1. 15. The method of claim 13, wherein the error function is a crossentropy error function.
 16. The method of claim 13, wherein the errorfunction is a mean square error function.
 17. The method of claim 13,wherein the error function is a p-norm error function.
 18. The method ofclaim 12, wherein the offset value updater comprises: indicating, by acyclic-redundancy-checker (CRC), when a decoded one of the plurality ofcodeword fails and passes a cyclic-redundancy-check; storing, by amemory, decoded codewords that failed and passed thecyclic-redundancy-check; indicating, by a comparator, when less than xcodewords are decoded and when x decoded codewords are decoded;incrementing, by a counter, the index to the next one of the pluralityof codeword to be decoded; and providing, by a gradient calculator, theupdated offset value based on an error function of the second decoderand the decoded codewords that failed the cyclic-redundancy-checkconfigured and erasing the memory.
 19. The method of claim 18, furthercomprising: receiving, by a third decoder, the updated offset value andthe decoded codewords that failed the cyclic-redundancy-check; andre-decoding, by the third decoder, the codewords that failed thecyclic-redundancy-check using the updated offset value.
 20. The methodof claim 18, wherein the error function is one of a cross entropy errorfunction, a mean square error function, and a p-norm error function.